home *** CD-ROM | disk | FTP | other *** search
/ IRIX Installation Tools & Overlays 1999 May / SGI IRIX Installation Tools & Overlays 1999 May - Disc 2.iso / relnotes / compiler_eoe / ch1.z / ch1
Text File  |  1999-04-19  |  38KB  |  1,059 lines

  1.  
  2.  
  3.  
  4.                                                - 1 -
  5.  
  6.  
  7.  
  8.                     7.2.1.2m/f Base Compiler Execution Environment Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                - 2 -
  69.  
  70.  
  71.  
  72.                     1.  _I_n_t_r_o_d_u_c_t_i_o_n
  73.  
  74.                     These notes describe the second maintenance
  75.                     update to the IRIX Compiler Execution
  76.                     Environment (_c_o_m_p_i_l_e_r__e_o_e
  77.                      version 7.2.1.3m) from Silicon Graphics, Inc.
  78.  
  79.                     The IRIX Compiler EOE contains compiler
  80.                     execution utilities such as _r_l_d and those base
  81.                     compiler libraries supplied as DSOs (dynamic
  82.                     shared objects).  DSOs are discussed in the
  83.                     _d_s_o(_5) man page.  The IRIX Compiler EOE supports
  84.                     MIPSpro compilers in either 64-bit, 32-bit, or
  85.                     high performance 32-bit (n32) compilation modes.
  86.  
  87.                     1.1  _7._2._1._3_m/_f _M_a_i_n_t_e_n_a_n_c_e/_F_e_a_t_u_r_e _U_p_d_a_t_e
  88.                          _I_n_f_o_r_m_a_t_i_o_n
  89.  
  90.  
  91.                     This version of the compiler_eoe subsystem for
  92.                     IRIX 6.5.3m/f replaces _c_o_m_p_i_l_e_r__e_o_e subsystems
  93.                     from version 7.2.1 and patches patchSG0003131,
  94.                     patchSG0003139,  patchSG0003247 and
  95.                     patchSG0003378.
  96.  
  97.                     The development environment subsystems of these
  98.                     patches will not be replaced by this overlay.
  99.  
  100.                     The same version of compiler_eoe is part of the
  101.                     6.5.3 maintenance and feature overlays.
  102.  
  103.  
  104.  
  105.                     1.2  _S_y_s_t_e_m__P_r_e_r_e_q_u_i_s_i_t_e
  106.  
  107.                     If you plan to run _a_n_y IRIX applications, it is
  108.                     important to note that you mmmmuuuusssstttt install the IRIX
  109.                     Compiler EOE.
  110.  
  111.  
  112.                     1.3  _R_e_l_e_a_s_e__I_d_e_n_t_i_f_i_c_a_t_i_o_n__I_n_f_o_r_m_a_t_i_o_n
  113.  
  114.                     Following is the release identification
  115.                     information for the IRIX Compiler Execution
  116.                     Environment (_c_o_m_p_i_l_e_r__e_o_e):
  117.  
  118.                                                    Compiler_eoe
  119.                     SSSSooooffffttttwwwwaaaarrrreeee PPPPrrrroooodddduuuucccctttt
  120.                                                    7.2.1.3m/f
  121.                     VVVVeeeerrrrssssiiiioooonnnn
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                                                - 3 -
  135.  
  136.  
  137.  
  138.                                                    IRIX 6.5
  139.                                                    IRIX 6.5.3m/f
  140.                     SSSSyyyysssstttteeeemmmm SSSSooooffffttttwwwwaaaarrrreeee RRRReeeeqqqquuuuiiiirrrreeeemmmmeeeennnnttttssss
  141.  
  142.  
  143.                     1.4  _7._2._1._3_m/_f _I_R_I_X _C_o_m_p_i_l_e_r _E_x_e_c_u_t_i_o_n
  144.                          _E_n_v_i_r_o_n_m_e_n_t _S_u_b_s_y_s_t_e_m_s
  145.  
  146.                     The 7.2.1.3m/f IRIX Compiler EOE software
  147.                     (_c_o_m_p_i_l_e_r__e_o_e) includes these subsystems:
  148.  
  149.  
  150.  
  151.  
  152.                     _c_o_m_p_i_l_e_r__e_o_e._m_a_n._d_s_o       IRIX DSO man page
  153.                                                (default)
  154.  
  155.                     _c_o_m_p_i_l_e_r__e_o_e._m_a_n._r_e_l_n_o_t_e_s  IRIX compiler
  156.                                                execution environment
  157.                                                release notes
  158.                                                (default)
  159.  
  160.                     _c_o_m_p_i_l_e_r__e_o_e._m_a_n._u_n_i_x      IRIX standard man
  161.                                                pages (default)
  162.  
  163.                     _c_o_m_p_i_l_e_r__e_o_e._s_w._c_p_p        Source code
  164.                                                preprocessor
  165.                                                (default)
  166.  
  167.                     _c_o_m_p_i_l_e_r__e_o_e._s_w._l_b_o_o_t      Kernel lboot software
  168.                                                (default)
  169.  
  170.                     _c_o_m_p_i_l_e_r__e_o_e._s_w._l_i_b        Base compilers
  171.                                                execution libraries
  172.                                                (default)
  173.  
  174.                     _c_o_m_p_i_l_e_r__e_o_e._s_w._u_n_i_x       IRIX execution
  175.                                                environment
  176.                                                (compiler) (default)
  177.  
  178.                     _c_o_m_p_i_l_e_r__e_o_e._s_w_6_4._l_i_b      Base compilers
  179.                                                execution libraries
  180.                                                (64-bit) (default on
  181.                                                R8000 and R10000
  182.                                                systems only)
  183.  
  184.                     _c_o_m_p_i_l_e_r__e_o_e._s_w_6_4._u_n_i_x     IRIX execution
  185.                                                environment ( 64-bit
  186.                                                compiler) (default on
  187.                                                R8000 and R10000
  188.                                                systems only)
  189.  
  190.                     If you are installing this option for the first
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                                - 4 -
  203.  
  204.  
  205.  
  206.                     time, the subsystems marked ``default'' are
  207.                     those that are installed if you use the ``go''
  208.                     menu item.  To install a different set of
  209.                     subsystems, use the ``install,'' ``remove,''
  210.                     ``keep,'' and ``step'' commands in _i_n_s_t to
  211.                     customize the list of subsystems to be
  212.                     installed, then select the ``go'' menu item.
  213.  
  214.                     The compiler_eoe subsystems from the 7.2.1.3m/f
  215.                     update can only be installed if the
  216.                     corresponding subsystems from the MIPSpro 7.2.1
  217.                     release on IRIX 6.5 have already been installed.
  218.  
  219.  
  220.  
  221.                     1.5  _O_n_l_i_n_e__R_e_l_e_a_s_e__N_o_t_e_s
  222.  
  223.                     After you install the online documentation for a
  224.                     product (the _r_e_l_n_o_t_e_s subsystem), you can view
  225.                     the release notes on your screen.
  226.  
  227.                     If you have a graphics system, select ``Release
  228.                     Notes'' from the Tools submenu of the Toolchest.
  229.                     This displays the _g_r_e_l_n_o_t_e_s(1) graphical browser
  230.                     for the online release notes.
  231.  
  232.                     Refer to the _g_r_e_l_n_o_t_e_s(1) man page for
  233.                     information on options to this command.
  234.  
  235.                     If you have a nongraphics system, you can use
  236.                     the _r_e_l_n_o_t_e_s command.  Refer to the _r_e_l_n_o_t_e_s(1)
  237.                     man page for accessing the online release notes.
  238.  
  239.  
  240.                     1.6  _B_u_g__F_i_x_e_s
  241.  
  242.                     The following bug fixes are in the 7.2.1.3m/f
  243.                     versions of compiler_eoe for IRIX 6.5.3m/f. For
  244.                     the sake of completeness, fixes in 7.2.1.2m (for
  245.                     IRIX 6.5.2m) and fixes in 7.2.1.1m (for IRIX
  246.                     6.5.1m) and version 7.2.1 (for IRIX 6.5) are
  247.                     also included.
  248.  
  249.  
  250.                     1.6.1  _L_i_b_m _B_u_g_s _F_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1 _r_e_l_e_a_s_e
  251.                     _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5
  252.  
  253.                     The following libm bug fixes have been applied
  254.                     from patchSG0003131 into compiler_eoe 7.2.1.1m
  255.                     for IRIX 6.5.1m:
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                                - 5 -
  269.  
  270.  
  271.  
  272.                        +o Under certain inputs sin() returns wrong
  273.                          results on systems running on the R5000
  274.                          CPU.  This has been fixed (BUG ID #591738,
  275.                          #594226, #595879)
  276.  
  277.  
  278.  
  279.                     1.6.2  _L_i_b_m_p _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1._2_m
  280.                     _r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5._2_m
  281.  
  282.                     The following libmp bug fixes have been made in
  283.                     compiler_eoe 7.2.1.3m/f for IRIX 6.5.3m/f:
  284.  
  285.                        +o 6.5.[2,3] libmp.so not cpr compliant.  This
  286.                          has been fixed (BUG ID #658799).
  287.  
  288.                        +o various routines invoke mp_numthreads
  289.                          disabling dynamic threads in 6.5.  This has
  290.                          been fixed (BUG ID #638713).
  291.  
  292.                        +o cannot change no. of threads between
  293.                          parallel regions with 7.3 compilers.  This
  294.                          has been fixed (BUG ID #657207).
  295.  
  296.  
  297.  
  298.                     1.6.3  _L_i_b_m_p _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1._1_m
  299.                     _r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5._1_m
  300.  
  301.                     The following libmp bug fixes have been made in
  302.                     compiler_eoe 7.2.1.2m/f for IRIX 6.5.2m/f:
  303.  
  304.                        +o Use of the environment variable
  305.                          MP_SLAVE_STACKSIZE would lead to
  306.                          unpredictable results.  This has been fixed
  307.                          (BUG ID #554156).
  308.  
  309.                        +o Fortran MP programs (sproc) with unlimited
  310.                          stacksizes would fail.  This has been fixed
  311.                          (BUG ID #560707).
  312.  
  313.                        +o A Performance degradation would occur when
  314.                          OMP_DYNAMIC is set and the program is run
  315.                          under miser.  This has been fixed (BUG ID
  316.                          #587240).
  317.  
  318.                        +o Libmp MLD information is incorrect on 128
  319.                          CPUs.  This has been fixed (BUG ID
  320.                          #599609).
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                                - 6 -
  335.  
  336.  
  337.  
  338.                        +o OpenMP: misleading error message for
  339.                          barrier in parallel do.
  340.  
  341.                          A barrier within the dynamic extent of a
  342.                          parallel do gets a misleading error message
  343.                          at runtime.  In particular, a barrier is a
  344.                          synchronization construct, not a
  345.                          worksharing construct.  This has been fixed
  346.                          (BUG ID #610654).
  347.  
  348.                        +o _DSM_MUSTRUN fails with 1 CPU per node
  349.  
  350.                          When using _DSM_MUSTRUN flag and if a node
  351.                          only has 1 CPU and a process gets scheduled
  352.                          to run on that node, libmp may attempt to
  353.                          place a process on a non-existent
  354.                          processor.  This has been fixed (BUG ID
  355.                          #587240).
  356.  
  357.  
  358.                     1.6.4  _L_i_b_m_p _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1 _r_e_l_e_a_s_e
  359.                     _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5
  360.  
  361.                     The following libmp bug fixes have been applied
  362.                     from patchSG0003139 into compiler_eoe 7.2.1.1m
  363.                     for IRIX 6.5.1m:
  364.  
  365.                        +o The OpenMP directive
  366.                          schedule(static,ichunk) ignored ichunk.
  367.                          This has been fixed (BUG ID #581775).
  368.  
  369.                        +o The OpenMP directive ordered
  370.                          schedule(dynamic,ichunk) deadlocks if
  371.                          ichunk is not equal to n/nprocs.  This has
  372.                          been fixed (BUG ID #581835).
  373.  
  374.                        +o Program with the OpenMP ORDERED directive
  375.                          deadlocks under some conditions.  This has
  376.                          been fixed (BUG ID #590252).
  377.  
  378.  
  379.                     1.6.5  _L_i_b_m_p _B_u_g_s _F_i_x_e_d _i_n _t_h_e _7._2._1 _r_e_l_e_a_s_e _o_f
  380.                     _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5
  381.  
  382.                     The following bugs from earlier IRIX releases
  383.                     were fixed in compiler_eoe for the IRIX 6.5
  384.                     release.
  385.  
  386.  
  387.                        +o The routine mp_set_slave_stacksize() should
  388.                          return the old value of stacksize. This has
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                                - 7 -
  401.  
  402.  
  403.  
  404.                          been fixed (BUG ID #232474).
  405.  
  406.  
  407.                        +o The MP library had a bug in -n32
  408.                          compilations where the return address was
  409.                          improperly aligned in memory. This caused a
  410.                          problem with stack unwinding by tools such
  411.                          as dbx and gprof.  This has been fixed (BUG
  412.                          ID #378358).
  413.  
  414.  
  415.                        +o The MP library now provides support for
  416.                          data distribution, useful in the context of
  417.                          distributed shared memory machines such as
  418.                          the Origins.  (BUG ID #404228)
  419.  
  420.  
  421.                        +o A user-specified signal handler to trap
  422.                          control-c (SIGINT) did not work. This has
  423.                          been fixed (BUG ID #441658).
  424.  
  425.  
  426.                        +o CC Sync counter can occasionally encounter
  427.                          a hardware deadlock on IP25. With this
  428.                          version of libmp the use of the CC-sync
  429.                          counter is disabled by default.  (BUG ID
  430.                          #451258)
  431.  
  432.  
  433.                        +o A bug in the use hardware fetch-and-op on
  434.                          IP27 systems through the _DSM_FOP
  435.                          environment variable would cause programs
  436.                          run with one thread to get deadlocked. With
  437.                          this version of libmp _DSM_FOP now works
  438.                          correctly with varying number of threads,
  439.                          including 1.  (BUG ID #455437)
  440.  
  441.  
  442.                        +o On IP27 the environment variable
  443.                          _DSM_MUSTRUN could sometimes cause multiple
  444.                          threads to be assigned to the same node,
  445.                          leading to poor performance. The MP library
  446.                          now requests a small amount of memory per
  447.                          node, avoiding corner cases that resulted
  448.                          in the above problem.  (BUG ID #455511)
  449.  
  450.  
  451.                        +o The symbol pm_filldefault referenced by the
  452.                          MP library was undefined on systems before
  453.                          IRIX 6.4. To allow execution on earlier
  454.                          systems (e.g. IRIX 6.2) this symbol needed
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                                - 8 -
  467.  
  468.  
  469.  
  470.                          to be declared as weak within the library.
  471.                          This has been fixed.  (BUG ID #460617)
  472.  
  473.  
  474.                        +o On Origin-2000 systems although page
  475.                          migration is disabled by default, once
  476.                          enabled the migration level requested was
  477.                          extremely aggressive. The migration level
  478.                          (if enabled) is now lower, with the value
  479.                          of 10 on a scale of 1-100. In addition, the
  480.                          user can control the migration level
  481.                          explicitly through the environment variable
  482.                          _DSM_MIGRATION_LEVEL (which can take values
  483.                          between 1 and 100).  (BUG ID #468925)
  484.  
  485.  
  486.                        +o The behavior of two environment variables
  487.                          was fixed. The first concerns data
  488.                          placement on Origin-2000 systems:
  489.                          _DSM_PLACEMENT is now the recommended way
  490.                          to obtain either FIRST_TOUCH data placement
  491.                          (default) or ROUND_ROBIN placement
  492.                          (optional). The second environment variable
  493.                          controls the underlying barrier
  494.                          implementation in the MP runtime:
  495.                          _DSM_BARRIER can now be set to FOP,
  496.                          enabling the hardware uncached/fetchop
  497.                          barrier implementation which is disabled by
  498.                          default.  (BUG ID #474179)
  499.  
  500.  
  501.                        +o A bug in the handling of a zero-trip
  502.                          parallel loop with either dynamic or gss
  503.                          scheduling could cause the loop to spin
  504.                          indefinitely.  This has been fixed (BUG ID
  505.                          #520385).
  506.  
  507.  
  508.                        +o A bug in program termination could result
  509.                          in error messages of the form "Error doing
  510.                          waitpid for slave termination".  when the
  511.                          user program had installed a SIGCLD
  512.                          handler. This has been fixed (BUG ID
  513.                          #538673).
  514.  
  515.  
  516.                     1.6.6  _r_l_d _a_n_d _r_q_s _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1._2_m
  517.                     _r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5._2_m
  518.                          Various performance improvements have
  519.                          reduced cpu time spent in rld (in small
  520.                          ways).  (Bug #608296) (Bug #641687) (Bug
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                                - 9 -
  533.  
  534.  
  535.  
  536.                          #641192)
  537.  
  538.                        +o By default rld no longer re-evaluates name
  539.                          bindings on dlclose() (The _RLD_ARGS -f
  540.                          argument is accepted as also meaning use
  541.                          this new default behavior).  This makes
  542.                          dlclose() fast and eliminates many lazy-
  543.                          text-resolves.  It will also affect the
  544.                          operation of programs that rely on names
  545.                          being rebound to a different function/data
  546.                          item after a dlclose().  Such programs are
  547.                          erroneous.  If _RLD_ARGS has the -s option
  548.                          present, the old slow method of dlclose is
  549.                          used (this is provided so erroneous
  550.                          programs depending on the old method can be
  551.                          made to work).  [Details:  Each name
  552.                          _should_ only be bound once by rld, but in
  553.                          complicated circumstances names can be
  554.                          rebound.  If the result of application
  555.                          actions (like dlclose()) is that the
  556.                          rebinding finds a different external
  557.                          definition the result can be application
  558.                          problems or an application crash (rld does
  559.                          not realize this has happened and will not
  560.                          give a warning).  (In addition, having a
  561.                          weak name defined in one DSO and a strong
  562.                          version in a DSO loaded later leads to
  563.                          'undefined name bindings' and potentially
  564.                          inconsistent application behavior.  This
  565.                          has always been true but not mentioned
  566.                          earlier.).]  (Bug #426852)
  567.  
  568.                        +o If an application did an sgidladd() or
  569.                          dlopen(...RTLD_GLOBAL), followed by a
  570.                          dlopen(...RTLD_LOCAL), (and the call to
  571.                          sgidladd/dlopen(...RTLD_GLOBAL) was itself
  572.                          done from a dlopened/dladded DSO) name
  573.                          lookups by rld might not find names made
  574.                          global by the sgidladd() or
  575.                          dlopen(...RTLD_GLOBAL).  This was a bug
  576.                          introduced in patch 3378.  (Bug #644389)
  577.  
  578.                        +o If a DSO or executable had more than 4096
  579.                          conflict symbols, rqs could core dump.  Now
  580.                          hash table is defined allowing up to
  581.                          262,000+ conflict symbols (the max size
  582.                          allowed: if a smaller will work a smaller
  583.                          is used).  (Bug #638915)
  584.  
  585.                        +o If a lazy-text-resolution call involved
  586.                          floating point argument registers and if a
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                                - 10 -
  599.  
  600.  
  601.  
  602.                          call in the -init code in the DSO loaded
  603.                          involved floating point registers the
  604.                          lazy-text call fp argument registers would
  605.                          be destroyed by the -init arguments.  Due
  606.                          to details of argument register passing
  607.                          this bug is seen most readily with the
  608.                          n32/64 ABIs, though it can be reproduced in
  609.                          any of the ABIs (this bug has existed since
  610.                          IRIX5.0 but apparently no one had
  611.                          encountered it before!).  (Bug #649041)
  612.  
  613.                        +o On delay-loads of DSO's, versions have been
  614.                          ignored for almost all earlier releases of
  615.                          rld.  Now rld checks the version number on
  616.                          delay-loads too.  The new _RLD_ARGS option
  617.                          -idv turns off DSO version checking for
  618.                          delay-loads in rld and rld.debug, restoring
  619.                          the old, broken behavior.  (Bug #651001)
  620.  
  621.                        +o Debugger stack traces through rld would
  622.                          sometimes stop in rld due to mistakes in
  623.                          some hand-written assembly code in rld.
  624.                          Now the the stack traces show the callers
  625.                          back to main() as appropriate.  (Bug
  626.                          #630359)
  627.  
  628.                        +o Now rld obeys the general rule that
  629.                          processing is breadth-first (loading of
  630.                          DSOs from liblists and dlsym() name
  631.                          resolution are examples).  [Details: In the
  632.                          past it did almost-breadth-first ordering.
  633.                          Because seeing an error in ordering
  634.                          required having duplicate symbol
  635.                          definitions at least 4 levels deep in DSO
  636.                          nested liblists, it is unlikely this bug
  637.                          affected any application.  But the ABIs
  638.                          have always been clear and now rld obeys
  639.                          the ABIs.]  (Bug #629117)
  640.  
  641.                        +o In the case of a dlclose(), all -fini
  642.                          execution is done for a set of DSOs (where
  643.                          this is the dlclose of the last reference)
  644.                          before any are unmapped.  (Bug #629128)
  645.  
  646.                        +o Nested dlopen/sgidladd/delay-load  (meaning
  647.                          invoking dlopen/sgidladd/delay-load from
  648.                          within the -init or -fini code of a
  649.                          dlopen/sgidladd/delay-load) now works even
  650.                          in the pthreads and sproc threads cases.
  651.                          Nested dlopen/sgidladd/delay-load was
  652.                          always problematical (though if no pthreads
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                                - 11 -
  665.  
  666.  
  667.  
  668.                          or sproc threads were in use it might have
  669.                          appeared to work as long as none of the
  670.                          nested dlopen/etc failed).  Use nested
  671.                          dlopen/sgidladd only when absolutely
  672.                          required.  Use -init only when absolutely
  673.                          required, as the nested dependencies make
  674.                          static prediction of the ordering in which
  675.                          the -init code is to be run difficult.  C++
  676.                          global constructors ordering across
  677.                          compiliation units has always been
  678.                          unspecified by the C++ definition. Adding
  679.                          delay-load to the set of DSOs with mutual
  680.                          constructor calls makes the ordering even
  681.                          less predictable.  Using/setting
  682.                          sigprocmask(2) in -init or -fini code is
  683.                          not a good idea as the set of masks seen as
  684.                          ON is affected by rld.  The precise
  685.                          behavior of sigprocmask(2) in -init or
  686.                          -fini code depends on which of 1) pthreads,
  687.                          2) sproc threads, or 3) neither is in use
  688.                          (and the details are not specified in these
  689.                          release notes: best to avoid
  690.                          setting/resetting the sigprocmask() in
  691.                          -init or -fini code).  In addition, it is
  692.                          still difficult to debug -init code in the
  693.                          application startup.  (Bug #629707)
  694.  
  695.                        +o If the filesystem of a DSO had no XFS
  696.                          attributes, rqs could fail (refuse to
  697.                          update a DSO to allow quickstart) and fail
  698.                          to print the proper reason message.  (The
  699.                          system would operate properly in spite of
  700.                          this rqs error.)  Now rqs understands that
  701.                          ENOATTR is not really a failure, allowing
  702.                          the DSO to be requickstarted and uses
  703.                          strerror() to properly print all errno
  704.                          values when there is an error .  (Bug
  705.                          #634151)
  706.  
  707.                        +o rld got delay load DSO visibility slightly
  708.                          wrong in MIPSpro7.2.1.  Too restrictive in
  709.                          symbol visibility.  (Bug #547873)
  710.  
  711.                        +o ssrun(1) could interact with rld, causing
  712.                          some -init functions to not run correctly.
  713.                          This fix corrects the rld part in this.
  714.                          [Note: it is erroneous for a signal handler
  715.                          to call dlopen(), dlclose() sgidladd(),
  716.                          sgidlopen_version(), dlsym(), or dlerror().
  717.                          And no function call in a signal handler is
  718.                          allowed to cause a delay-load of a DSO
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                                - 12 -
  731.  
  732.  
  733.  
  734.                          (this is an implicit dlopen so is not
  735.                          correct).  In fact very few functions are
  736.                          legally callable from a signal handler. the
  737.                          dl* functions are not so callable.  It is
  738.                          up to  applications to ensure such does not
  739.                          happen.  ] (Bug #648641)
  740.  
  741.  
  742.                     1.6.7  _r_l_d _a_n_d _r_q_s _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1._1_m
  743.                     _r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5._1_m
  744.  
  745.                     The following rld and rqs bug fixes have been
  746.                     made in compiler_eoe 7.2.1.2m/f for IRIX
  747.                     6.5.2m/f:
  748.  
  749.                        +o RLD: potential deadlock and signal-mask
  750.                          handling problems.  This has been fixed
  751.                          (BUG ID #549912).
  752.  
  753.                        +o Rld needs to emit better message in case of
  754.                          bad DSO/executable.  This has been fixed
  755.                          (BUG ID #554703).
  756.  
  757.                        +o Incorrrect implementation of
  758.                          add_version_to_name() in rld.  This has
  759.                          been fixed (BUG ID #558948).
  760.  
  761.                        +o Rqsall would under certain circumstances
  762.                          fall into an infinite loop.  This has been
  763.                          fixed (BUG ID #568510).
  764.  
  765.                        +o A call occurs to a function defined by rld
  766.                          at 0xffffffff.  This has been fixed (BUG ID
  767.                          #586353).
  768.  
  769.                        +o Rld warning does not give object name This
  770.                          has been fixed (BUG ID #589044).
  771.  
  772.                        +o Rld incorrectly performs an alloca() in a
  773.                          loop. This has been fixed (BUG ID #600777).
  774.  
  775.                        +o Rqsall manpage example doesn't work.  This
  776.                          has been fixed (BUG ID #604402).
  777.  
  778.                        +o Rld RHF_NO_LIBRARY_REPLACEMENT is not
  779.                          honored.  This has been fixed (BUG ID
  780.                          #608753).
  781.  
  782.                        +o Rld is too large and could be smaller with
  783.                          its own vsnprintf.  This has been fixed
  784.                          (BUG ID's #614133, #615089).
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                                - 13 -
  797.  
  798.  
  799.  
  800.                        +o Rld does extra useless lookups degrading
  801.                          performance.  This has been fixed (BUG ID
  802.                          #615441).
  803.  
  804.                        +o Application performance doing dlopens slow
  805.                          due to poor string compare code.  This has
  806.                          been fixed (BUG ID #620471).
  807.  
  808.  
  809.                     1.6.8  _r_l_d _a_n_d _r_q_s _B_u_g_s _F_i_x_e_d _i_n _t_h_e _7._2._1
  810.                     _r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5
  811.  
  812.                     The following bugs from earlier IRIX releases
  813.                     were fixed in compiler_eoe for the IRIX 6.5
  814.                     release.
  815.  
  816.  
  817.                        +o dlopen(NULL) hangs on IRIX 6.2.  This has
  818.                          been fixed (BUG ID #290198).
  819.  
  820.                        +o LD_LIBRARY_PATH environment variables of
  821.                          several hundred characters would cause rld
  822.                          corruption on IRIX 6.2.  This has been
  823.                          fixed (BUG ID #337982).
  824.  
  825.                        +o rld would not handle executables containing
  826.                          prefetch instructions correctly on IRIX
  827.                          6.2.  This has been fixed (BUG ID #352206).
  828.  
  829.                        +o Under certain circumstances rld would loop
  830.                          in dlopen() or dlsym() on IRIX 6.2.  This
  831.                          has been fixed (BUG ID #364118).
  832.  
  833.                        +o Under certain circumstances the IRIX 6.2
  834.                          version of rqs would corrupt libraries.
  835.                          This has been fixed (BUG ID #366990).
  836.  
  837.                        +o The IRIX 6.2 version of rld drops core on
  838.                          wolf compiled -O3 and pixified.  This has
  839.                          been fixed (BUG ID #383655).
  840.  
  841.                        +o Initialized variables would be resolved
  842.                          differently between the 5.3 and 6.2.
  843.                          versions of rld.  This has been fixed (BUG
  844.                          ID #387407).
  845.  
  846.                        +o Under certain circumstances rld would hang
  847.                          in a C++ program running pthreads on IRIX
  848.                          6.2.  This has been fixed (BUG ID #412725).
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                                - 14 -
  863.  
  864.  
  865.  
  866.                        +o 6.2: dlopen (..., RTLD_NOW) would not
  867.                          report undefined symbols.  This has been
  868.                          fixed (BUG ID #428927).
  869.  
  870.                        +o Under circumstances rld would encounter a
  871.                          race condition when running MP programs
  872.                          under IRIX 6.2.  This has been fixed (BUG
  873.                          ID #433288).
  874.  
  875.                        +o IRIX 6.2 rld crash trying to update
  876.                          readonly data.  This has been fixed (BUG ID
  877.                          #449282).
  878.  
  879.                        +o IRIX 6.2 and 6.3 rld security
  880.                          vulnerability.  This has been fixed (BUG ID
  881.                          #482870).
  882.  
  883.                        +o Under certain circumstances a multi-got DSO
  884.                          would get wrong relocation information.
  885.                          This has been fixed (BUG ID #483964).
  886.  
  887.                        +o There was a need to suppress rld warnings
  888.                          about ABI in most cases.  This has been
  889.                          fixed (BUG ID #503926).
  890.  
  891.                        +o The rld delay-load was slow if many DSOs
  892.                          were delay loaded.  This has been fixed
  893.                          (BUG ID #506076).
  894.  
  895.                        +o rld: eliminate bloat with stubs.  (BUG ID
  896.                          #506166)
  897.  
  898.                        +o The following rld warning message was
  899.                          unclear.
  900.  
  901.                          rld: Warning: The aggregate IEEE
  902.                           exceptions required (0x10) contradicts the aggregate IEEE
  903.                           exceptions permitted (0x8).
  904.  
  905.                          This has been explained in the rld(1) man
  906.                          page (BUG ID #507206).
  907.  
  908.                        +o t_splay causes stress test shcreate to
  909.                          sometimes SIGBUS. This has been fixed (BUG
  910.                          ID #520846).
  911.  
  912.                        +o An rld error would cause Cosmoplayer to be
  913.                          unable to load most worlds.  This has been
  914.                          fixed (BUG ID #523673).
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                                - 15 -
  929.  
  930.  
  931.  
  932.                        +o Under certain circumstances rld would have
  933.                          problems with dlclose(). This has been
  934.                          fixed (BUG ID #527001).
  935.  
  936.                        +o Under certain circumstances rld would dump
  937.                          core.  This has been fixed (BUG ID
  938.                          #530749).
  939.  
  940.                        +o Under certain circumstances rld fails to
  941.                          handle a multigot shared object that is
  942.                          relocated.  This has been fixed (BUG ID
  943.                          #534245).
  944.  
  945.                        +o Unnecessary conflict resolution makes
  946.                          dlopen() slow.  This has been fixed (BUG ID
  947.                          #554894).
  948.  
  949.                        +o Under certain circumstances
  950.                          sgidlopen_version() does not work properly.
  951.                          This has been fixed (BUG ID #560586).
  952.  
  953.                        +o Under certain circumstances rqs would dump
  954.                          core loading n32 mips3 shared objects.
  955.                          This has been fixed (BUG ID #536186).
  956.  
  957.                        +o Rqsall needed to prevent libraries with
  958.                          same soname from having the same timestamp.
  959.                          This has been fixed (BUG ID #538535).
  960.  
  961.                        +o Rqsall: libraries fail to requickstart when
  962.                          the so_locations region is fragmented.
  963.                          This has been fixed (BUG ID #555509).
  964.  
  965.                        +o Under certain circumstances rqsall would
  966.                          use inappropriate start addresses for
  967.                          shared object files.  This has been fixed
  968.                          (BUG ID #556199).
  969.  
  970.                        +o Under certain circumstances rqsall computes
  971.                          library sizes incorrectly.  This has been
  972.                          fixed (BUG ID #561583).
  973.  
  974.                        +o Rqsall needs to avoid placing DSO's between
  975.                          0x400000 and 0x2000000 for o32 objects.
  976.                          This has been fixed (BUG ID #566180).
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                                - 16 -
  995.  
  996.  
  997.  
  998.                     1.7  _P_r_o_d_u_c_t__S_u_p_p_o_r_t
  999.  
  1000.                     Silicon Graphics, Inc., provides a comprehensive
  1001.                     product support maintenance program for its
  1002.                     products.
  1003.  
  1004.                     If you are in the U.S. or Canada and would like
  1005.                     support for your Silicon Graphics-supported
  1006.                     products, contact the Technical Assistance
  1007.                     Center at 1-800-800-4SGI.  If you are outside
  1008.                     these areas, contact the Silicon Graphics
  1009.                     subsidiary or authorized distributor in your
  1010.                     country.
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.